package com.imooc.mq;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

/**
 * work工作模式生产者 (不用交换机)
 * @author liansen
 * @create 02-16-15:10
 */
public class WorkQueueProducerDemo {

    public static void main(String[] args) throws Exception {

        //创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("192.168.31.68");
        factory.setPort(5672);
        factory.setUsername("guest");
        factory.setPassword("guest");

        //通过工厂创建连接
        Connection connection = factory.newConnection();
        //通过连接创建信道
        Channel channel = connection.createChannel();

        /**
         * 创建队列，简单模式不需要交换机
         * String queue, 队列名称
         * boolean durable, 是否持久化
         * boolean exclusive, 是否独占,true:只能有一个消费者监听这个队列, 一般设为false
         * boolean autoDelete, 是否自动删除, true:当没有消费者时,自动删除队列
         * Map<String, Object> arguments map类型的其他参数
         */
        channel.queueDeclare("work_queue", true, false, false, null);

        /**
         * 向队列发送多条消息
         * String exchange, 交换机名称
         * String routingKey, 路由键, 如果交换机是"",则路由键和队列名一样
         * BasicProperties props, 配置信息
         * byte[] body 消息数据
         */
        for(int i=0; i<10; i++){
            String msg = "开始上班, 任务[" + i + "]";
            channel.basicPublish("", "work_queue", null, msg.getBytes());
        }

        //关闭信道
        channel.close();
        //关闭连接
        connection.close();
    }
}







